package com.atguigu.tingshu.album.impl;


import com.atguigu.tingshu.album.AlbumFeignClient;
import com.atguigu.tingshu.common.result.Result;
import com.atguigu.tingshu.model.album.*;
import com.atguigu.tingshu.vo.album.AlbumStatVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.util.List;

@Slf4j
@Component
public class AlbumDegradeFeignClient implements AlbumFeignClient {


    /**
     * 根据专辑ID查询专辑信息（包含标签列表）
     *
     * @param id
     * @return
     */
    @Override
    public Result<AlbumInfo> getAlbumInfo(Long id) {
        log.error("[专辑服务]提供远程调用方法getAlbumInfo执行服务降级");
        return null;
    }


    /**
     * 根据三级分类ID查询分类视图
     *
     * @param category3Id
     * @return
     */
    @Override
    public Result<BaseCategoryView> getCategoryView(Long category3Id) {
        log.error("[专辑服务]提供远程调用方法getCategoryView执行服务降级");
        return null;
    }


    /**
     * 根据一级分类Id查询置顶7个三级分类列表
     * @param category1Id
     * @return
     */
    @Override
    public Result<List<BaseCategory3>> findTopBaseCategory3(Long category1Id) {
        log.error("[专辑服务]远程调用findTopBaseCategory3执行服务降级");
        return null;
    }


    /**
     * 根据专辑ID查询专辑统计信息
     * @param albumId
     * @return
     */
    @Override
    public Result<AlbumStatVo> getAlbumStatVo(Long albumId) {
        log.error("[专辑服务]远程调用getAlbumStatVo执行服务降级");
        return null;
    }


    /**
     * 查询所有一级分类列表
     *
     * @return
     */
    @Override
    public Result<List<BaseCategory1>> getAllCategory1() {
        log.error("远程调用专辑服务getAllCategory1服务降级");
        return null;
    }


    /**
     *  查询用户未购买声音列表
     * @param trackId 选择购买声音ID，作为起始标准计算未购买声音数量
     * @param trackCount 限制查询未购买声音数量
     * @return
     */
    @Override
    public Result<List<TrackInfo>> findWaitBuyTrackInfoList(Long trackId, Integer trackCount) {
        log.error("【专辑服务】提供findWaitBuyTrackInfoList远程调用失败");
        return null;
    }


    /**
     * 根据声音ID查询声音详情
     *
     * @param id
     * @return
     */
    @Override
    public Result<TrackInfo> getTrackInfo(Long id) {
        log.error("[专辑服务]提供远程调用getTrackInfo失败，执行服务降级");
        return null;
    }
}
